package P1850;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
 * Problema da disciplina de Estrutura de Dados e Complexidade de Algoritmos da
 * Pos Graduacao do Periodo 2011.1
 *
 * @see http://br.spoj.pl/problems/CFATORES/
 * @author Elenilson Vieira - 111100371 - elenilson[at]elenilsonvieira.com
 * @since 10 de abril de 2011
 */
public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        
        while(true){
            int number = Integer.parseInt(reader.readLine().trim());
            int numberCopy = number;

            if(number == 0)
                break;

            int amount = 0;

            if(numberCopy % 2 == 0)
                amount++;

            while(numberCopy % 2 == 0){
                numberCopy /= 2;
            }

            double sqrt = Math.sqrt(numberCopy);
            int i = 3;
            boolean newFactor = true;

            while(i <= sqrt){
                if(numberCopy % i == 0){
                    if(newFactor){
                        amount++;
                        newFactor = false;
                    }

                    numberCopy /= i;
                }else{
                    i += 2;
                    newFactor = true;
                }
                
                sqrt = Math.sqrt(numberCopy);
            }

            if(numberCopy > 1)
                amount++;

            System.out.println(String.format("%d : %d", number, amount));
        }
    }

    /**
     * Retorna uma lista de boolean indicando se o numero daquela posicao e'
     * primo ou nao.
     *
     * @param n a quantidade de primos a serem calculados
     *
     * @return um array que diz se o numero e' primo ou nao (numero = posicao + 1)
     */
    private static boolean[] eratostenes(int n) {
	int i, j, breakPoint;

        boolean primes[] = new boolean[n];
	primes[0] = false;
	for (i = 1; i < n; i++) {
		primes[i] = true;
	}

	breakPoint = (int) Math.sqrt(n);

	for (i = 1; i < breakPoint; i++) {
		if ( primes[i] == false )
			continue;
		for (j = 2*i + 1; j < n; j += (i + 1))
			primes[j] = false;
	}

        return primes;
    }

}
